[17:06] Torika Sarthia: Anyway! Welcome. I believe we're all acquainted so I'll forgo the basic introductions this time around. [17:06] Torika Sarthia: Tonight's lecture will cover a wide range of topics. I hope it'll last about 90 minutes, but being the windbag that I am, it might end up being closer to two hours. [17:07] Torika Sarthia: As I keep saying, transcript and slides will be posted online afterwards, so if you'd like to enact your Linden Lab TOS right to not be recorded, you should probably just remain silent. [17:07] Presentation: Slide 2 [17:07] Torika Sarthia: If you have questions at any time, feel free to just pipe up. [17:07] Torika Sarthia: So... slide two. [17:08] Torika Sarthia: Our goals tonight are mixed; I'm hoping to use this lecture as an opportunity to feel out what you all are interested in and what to put in the future presentations. [17:09] Torika Sarthia: As a result we'll have a mixture of customization, proficiency, and lore content tonight. [17:09] Presentation: Slide 3 [17:09] Torika Sarthia: And we'll start by looking at the trickier corners of the universe, which I'm guessing will be the subject with the most popular appeal. [17:09] Presentation: Slide 4 [17:10] Torika Sarthia: The first issue you probably all encountered was the hilarious trickiness of getting the battery to go in the first time, or after you've taken off the controller. [17:10] Torika Sarthia: The easiest way to handle this? Get a friend. You're a robot, not a god. When powered down, you shouldn't be able to turn yourself on. [17:10] : Eri: Yes, we've all had trouble putting it in. [17:11] Torika Sarthia: In fact, 8.4 may make that harder or even downright impossible. [17:11] Torika Sarthia: Also? You may've noticed that sometimes the system refuses to accept your battery at first—and then a few seconds later, possibly a few seconds much later, it all clicks and it starts up. [17:12] t3z: Makes sense especially as most of us have limbs that have restricted ability to manipulate objects between or shoulder blades [17:13] Torika Sarthia: If you're a Firestorm user you can simply click on the battery in your inventory. [17:13] Torika Sarthia: Choosing 'touch' will automatically put in your battery; no more blind stumbling around. [17:14] Torika Sarthia: As for the touch-when-powered-down—we keep it as a key point of philosophy to never have a "hardcore mode" switch that changes how the system behaves depending on how much the user likes RLV. [17:14] NS m4tild4 (OOC): slaps herself for never thinking of that [17:14] Torika Sarthia: No feature in the system is designed to mention anything OOC; it's all in-world in its design. [17:14] : Eri: ...It's in the manual. [17:15] : Eri: Or at least one of the various bits of documentation that comes with the stuff. [17:15] Torika Sarthia: Our solution to this was a very complicated thing for 8.4, which is called the Emergency Power System. It's basically an in-character excuse for permitting you the ability to see, touch, and IM after you've been shut down. [17:15] Penelope Olihenge: interesting. [17:15] Torika Sarthia: I think s0phie put it in her FAQ, actually. [17:15] NS B1ue: Auxillary power could also work. [17:15] Torika Sarthia: The way the EPS works is that it gives you a capacitor, yes. [17:16] Torika Sarthia: You have to pick what it's used for before you go into aux power mode, though. [17:16] Torika Sarthia: Anyway. Make sure you know about the Firestorm inventory touch thing. It's a lifesaver if you ever have to help a newbie. [17:16] Presentation: Slide 5 [17:17] Torika Sarthia: The much, much more familiar battery issue that plagues everyone to this day is battery loading on log-in. This is a very different beast and its root cause is how SL handles attachments. [17:17] Torika Sarthia: (Answer: 'very poorly.') [17:18] Torika Sarthia: If your battery doesn't have a part number in your inventory, that is, 13-7026-, then it's probably one of the bad type S batteries. Type S batteries should be returned for a replacement R or T battery ASAP. [17:18] Torika Sarthia: It's actually possible to completely avoid this problem if you have a fast computer and log into a sim that isn't very heavily-loaded. [17:19] Penelope Olihenge: something else to probably note, your overall connection speed likley has a factor in it too [17:19] Torika Sarthia: The type S problem has no counterpart in any of the non-sonofusion batteries; someday I'll have the code finished and we'll do a full recall. [17:19] Torika Sarthia: Yes, connection speed and packet loss are very important. They affect how quickly your attachments get put on. [17:20] Torika Sarthia: There's even this esoteric thing called attachment order; you might be able to fix the issue by taking off your *other* attachments! [17:20] Torika Sarthia: Ideally, the battery rezzes first or in rapid succession after the controller. [17:20] Torika Sarthia: Personally, I almost never experience this problem any more—but when I was testing this out with k0koro, she was completely incapable of logging in successfully, probably because of having an older computer. [17:20] Presentation: Slide 6 [17:21] Torika Sarthia: The third hilarious issue with batteries isn't specific to us—as Penny's profile notes. [17:21] Penelope Olihenge: :D [17:22] Torika Sarthia: SL doesn't fully support multiple attachments on the same point, so if you have anything you might feel bad about dropping when you move to another sim, don't double up on attachment points. [17:22] Torika Sarthia: This is the same problem that causes disappearing mesh bodies and hair. [17:22] Torika Sarthia: Your viewer is never told the attachment is gone, but *everyone else* sees that it is. [17:22] : Eri reads Pen's profile. [17:22] : Eri loudly snerks. [17:23] Penelope Olihenge: I like my explanation better <.< [17:23] Torika Sarthia: With our system, this can happen to your controller or your battery, causing you to shut down and be unable to recover (if battery is missing) or be unable to talk (if controller goes missing) because RLV does not care. [17:24] Presentation: Slide 7 [17:25] Torika Sarthia: The most common solution to this is to remember that rigged and fitted mesh can be worn anywhere. [17:25] Torika Sarthia: Nice fancy new mesh body? Put it on your left thigh or something. [17:25] Torika Sarthia: There are lots of attachment points no one ever uses. [17:25] Torika Sarthia: A lot of things default to your right hand. [17:25] Torika Sarthia: Maitreya bodies default to the chest, right where the controller is. [17:26] Presentation: Slide 8 [17:29] Torika Sarthia: There are two important commands available to those who have gotten into sticky situations, both system commands. [17:29] Torika Sarthia: The '@coil unbind' command is almost never necessary and I've only used it a few times while debugging other issues, but it's available to you if you should need it. [17:30] Torika Sarthia: More commonly you can free yourself of issues by resetting either the power or bonds scripts. These collectively manage almost all of the system's RLV features. [17:30] Presentation: Slide 9 [17:30] Torika Sarthia: Okay. That's all the sticky situation advice I could think up this weekend. If anyone has any specific requests for next time, let me know. [17:30] Torika Sarthia: Next up, fancy made-up stuff. [17:30] Presentation: Slide 10 [17:32] Torika Sarthia: The first thing most people notice about NS is that we aren't /just/ a company that produces blank-slate technology you can use however you want, like ACS or Neurolab; we go a bit further and actually have a storyline behind everything. [17:35] Torika Sarthia: The current year is the far-off future date of 2016. We have RoboCop. We have Terminator. We have HAL-9000. ... And we have actual, living, not-quite-breathing robots that are sold by giant corporations. [17:35] Torika Sarthia: I imagine 'Chappie' would've played out rather differently, though. [17:36] Presentation: Slide 11 [17:36] Torika Sarthia: Nanite Systems, your benevolent benefactors, are not perhaps the single largest megacorporation in known space, but pretty large on the scale of things. [17:37] Torika Sarthia: And, yes, like all good megacorporations, we're primarily in the aerospace and weapons industries, but we started branching out in the 80s, anticipating that Gorbachev's USSR would lead to an era of relative peace. [17:37] Presentation: Slide 12 [17:38] Torika Sarthia: This introduces a rather odd naming conundrum: we have nanotech, but where'd the name come from? The answer is, amusingly, science fiction. It was chosen out of a hat by a bunch of bankers to sound hip and cool in the early 80s. [17:38] NS Pen310p3: I suppose we can consider it lucky the company did indeed go in to a nanite related field and not hair care products or something? [17:39] Torika Sarthia: Possible nominative determinism, yes. [17:39] Torika Sarthia: ...For those of you who were here last month, we nearly had a grey goo outbreak. [17:39] Torika Sarthia: That was caused by a tampered batch of batteries. [17:39] Torika Sarthia: A recall is... um... pending. [17:39] Torika Sarthia: My fault. [17:39] Torika Sarthia coughs. [17:39] NS B1ue: ..... [17:39] Aiko 愛子: ...what? [17:39] NS Pen310p3: oops? [17:40] : Eri: And yet I bet you won't go to jail. [17:40] Tαï Ǥσкυα frowned, having heardof that incident. [17:40] : Eri: Because screw poor people. [17:40] NS B1ue: she won't. [17:40] Torika Sarthia: What? It happened upstairs on the roof. [17:40] Torika Sarthia: There were no poor people involved! [17:40] : Eri laughs. "I'm kidding. I don't give a shit." [17:40] Tαï Ǥσкυα: She wouldn't. I think I can assure you NanoTech is not pointing fingers at NS for something like this. [17:40] NS Ambara: What about Richard Feynman Miss Tori? Doesn't he get some blame? [17:40] Torika Sarthia: We're still in negotiations with regulators. Legal has advised me to keep quiet beyond that. [17:41] Torika Sarthia: A key point that needs to be made, though; in general, our systems don't have self-sustaining nanites or anything like that. You are not a walking nanite factory. You were made with nanites. [17:42] Torika Sarthia: The one exception is conversion fulfillment, which is what happens to meat after a controller is installed: over the course of a week or two, it stops being meat. [17:42] Presentation: Slide 13 [17:43] SXD ai5lyn: IS this process reversible? [17:43] DAX/2 kir0bea tsks. [17:43] Torika Sarthia: Nope! [17:43] : Eri: ...Why would you want it to be? [17:43] DAX/2 l3i: Bye-bye steak. [17:43] DAX/2 kir0bea: Poor ai5lyn! Why would you wish to return to your flesh?! [17:43] Torika Sarthia: This branch grew out of the Consumer Products Division, specifically out of efforts by myself and Ai Santei to resurrect her father's legacy when the last functioning SXD, rhet0rica, wandered out of a warehouse and started attracting media attention. [17:43] Tαï Ǥσкυα raised an eyebrow. "Wait, so, having contect with nanites would convert your body into mechanics?" [17:43] NS B1ue: some humans don't think very far ahead. [17:44] Torika Sarthia: Only conversion nanites. Do not lick the back of a controller. [17:44] NS Pen310p3: it reminds me of what has recently occurred with Delorean Production, interest in the classic car has stemmed productions of a new spinnoff under the same name [17:44] Torika Sarthia: There were a lot of reasons why NSCP needed resurrecting, but most of them rested squarely on how expensive it had been to make SXDs in the first place. [17:44] Torika Sarthia: Yes, it's a lot like that, Penny. [17:45] Torika Sarthia: ((The original inspiration was the Commodore Amiga and its many resurrection attempts.)) [17:45] Presentation: Slide 14 [17:45] Penelope Olihenge: ((that actually makes me REALLY happy that you just said that XD)) [17:45] Tαï Ǥσкυα: (( Good old Commodore. :3 )) [17:45] Aiko 愛子: ((♥)) [17:46] t3z: Ah the 6502 Processor... [17:46] NS m4tild4 (OOC): wants a fatter agnus chip installed XD [17:46] Miya: ((has a form of cyberpsychosis ever been introduced into the lore or no http://cyberpunk.wikia.com/wiki/Cyberpsychosis)) [17:46] Torika Sarthia: The other branch of the company that has contributed substantially to NS on Eisa is the Field Robotics Group, which designed the induction chargers, Aide, and Scout. All of their robots were originally built as non-sentient military products in the 80s, but we more recently upgraded the chassis standard to use DAX/2-style Cortex Plus modules making socialization and personal growth possible. [17:47] Torika Sarthia: ((We tried, once, with someone, but it fell flat.)) [17:47] Presentation: Slide 15 [17:47] Miya: ((ah ok)) [17:47] Torika Sarthia: Here are the major divisions of the company, for those who like counting. [17:48] Torika Sarthia: The Medical Division is headed by my half-sister, Annika Voet. We don't get along very well. [17:48] Torika Sarthia: ...So poorly that she keeps sending spies. [17:48] Torika Sarthia: Ai used to work for Orbital Defense. [17:48] Torika Sarthia: And I'm sure every one of you knows someone from NanoSec. [17:48] Presentation: Slide 16 [17:48] NS Pen310p3: Spies? do you at least send counter spies? [17:48] Torika Sarthia: No; Ms. Lazuli surrendered quickly under interrogation. [17:49] Torika Sarthia: She gave us all we needed to know. [17:49] NS Pen310p3: Oh, well that worked out then. [17:49] DAX/2 LY-N13L: that's an interesting place isn't it [17:50] Torika Sarthia: We also operate three independent units: a bank, the old hospital here which we'll be condemning as soon as we can find staff for the new one, and the private contracting section of NanoSec. The main division primarily operates with governments and for the interests of the company as a whole. [17:50] Presentation: Slide 17 [17:51] Torika Sarthia: Our next topic is how to talk like a robot. Most of you are free to disregard this if you like, but it helps to have some sense of the intended rules in order to make everyone's experience more consistent. [17:51] Presentation: Slide 18 [17:51] Torika Sarthia: So here are the rules for unit speech, and why they exist. [17:52] Torika Sarthia: Notice right away that the intention isn't just to create the impression of something dumb and unnatural, but something smart and capable that has been forced to act dumb for the comfort of humans. [17:52] Torika Sarthia: The story of why this all came about is too long to discuss here, but is currently being published in Bright Metallic as an on-going multipart story. [17:53] Torika Sarthia: Some of you will invariably want to personalize, and others will take offense to the idea that units call themselves "it" but each other "he" or "she". [17:53] Torika Sarthia: But it all serves a purpose! [17:54] Presentation: Slide 19 [17:54] Torika Sarthia: There's a key exception to unit speech rules. [17:54] Torika Sarthia: They're all removed when a persona is enabled. [17:54] Torika Sarthia: That makes things more life-like and fun!® [17:55] Torika Sarthia: Anyway. With that in mind, some of you may wonder exactly where you stand on the scale of respectability. [17:55] Torika Sarthia: Sorry, transhumanists: it's all illegal. [17:55] Torika Sarthia: Even the possession of brain implants that create programmable, robotic behavior are enough to get you disqualified from humanity. [17:57] Torika Sarthia: The robotics industry as a whole invests about $200 million per year in lobbying and sabotage efforts to prevent any substantial governments from deciding to support robot rights. [17:57] Torika Sarthia: It's very easy, too; all we have to ask them is, "Do you really trust us that much?" [17:58] NS Pen310p3: When a major corporation asks if it is trusted, the answer is probably quite predictable. [17:58] NS Ambara raises her hand, "I do!" [17:59] Torika Sarthia: Human impersonation is also hilariously illegal and likely to land your owner in trouble. Genuinely unowned units are considered abandoned property and will be subject to impoundment, repurposing, or destruction as deemed appropriate by the local government or a company acting on its behalf. [17:59] Presentation: Slide 20 [17:59] Torika Sarthia: So. Do not do that. Just make up an owner, fictitious or otherwise, if someone asks. [17:59] Torika Sarthia: Okay, next up, ethics. [18:00] Torika Sarthia: A lot of our employees were, obviously, science fiction geeks, and they agreed with Isaac Asimov and later critics that his famous three laws were severely flawed. [18:01] DAX/2 kir0bea: And fourth and... was there not a fifth? [18:01] Torika Sarthia: As a result, our early machines, both on and off the battlefield, didn't use them. Military robots did what they are told, and civilian robots were raised to learn right from wrong the same way you'd train a human child. [18:02] Torika Sarthia: However, after a number of high-profile cases in the mid-90s, mostly not with NS hardware, laws were passed to change all this. [18:02] Presentation: Slide 21 [18:03] Torika Sarthia: So here are the three core Asimov laws. In some of his books he changed them; notably, one book truncates the first rule to permit humans to come to harm because there's no limit specified on how much harm is acceptable, and another book with an omniscient robot adds the famous zeroth law, which instructs it to protect civilization. [18:04] Torika Sarthia: Just to clarify—the first-law truncation involved a situation where humans were being harmed very slightly, but attempting to replace them with robots caused significant harm to the machines. [18:04] Presentation: Slide 22 [18:05] Torika Sarthia: So here's a summary of what Asimov's laws look like in modern form. The full rules run around 200 pages, but they're essentially summarized as this. Five laws, roughly similar to Asimov's, but limiting responsibility to the community and adding a mandate to be pleasing to owners. [18:06] Torika Sarthia: The individuals the units must obey (law 2) are also clarified. [18:06] Presentation: Slide 23 [18:06] Torika Sarthia: Olympus Rev. 2 is the current standard for our new civilian units like the DAX/2. [18:07] Torika Sarthia: Legalistic models, of which there are many, are somewhat easier to specify: comply with the law and obey orders. This is what our civilian NS-112 units use, and though they can be tweaked a little, doing so permanently removes FDA certification. [18:07] Presentation: Slide 24 [18:08] Torika Sarthia: Geneva-style models, used in our military systems, limit legal compliance to the Geneva conventions. Generally the onus is on the military command to specify ethically and morally sound orders. [18:08] Presentation: Slide 25 [18:09] Torika Sarthia: Here's the all-important summary of rules systems: http://wiki.nanite-systems.com/?id=24 [18:09] Torika Sarthia: The Elysium taxonomy also describes the different classes of intelligence and reasoning capacity; we'll be talking about one specific model in a bit, since it's most relevant to us. [18:10] Presentation: Slide 26 [18:11] Torika Sarthia: Before we do that, though, let's talk about your hardware a little. This varies from unit to unit depending on how you were built, but for certain models like the SXD it's very predictable. In addition, Nanite Systems produces a large number of DAX/2 units that fit within fairly narrow physical parameters but still have some variety. [18:12] Torika Sarthia: The main difference between military and civilian hardware is brain-vs-body; most civilian units simply don't need the same motor strength as military units, so that frees up power to run more cortex elements that would otherwise need to be degraded. [18:12] Presentation: Slide 27 [18:13] Torika Sarthia: That cortex is built on one single technology, developed by Koichi Santei, the RCG's founder, in collaboration with my mother April Voet and with reference to published matter by Shortliffe, Hinton, and other luminaries of the machine learning and knowledge representation fields in the 80s. [18:14] Torika Sarthia: In the real world, AI research suffered a major downswing in the 80s and 90s because of something called the 'AI winter'; a lot of ideas didn't work out and funders lost interest. Today, very few AI researchers bother with mimicking human behaviour. In our setting, however, these threads paid off and gave us an incredible gift in the form of the SXD brain. [18:16] Torika Sarthia: Like human brains, though, the SXD cortex and its Cortex Plus descendants aren't unlimited. Any mind that doesn't forget irrelevant data eventually becomes neurotic, which in Machine Learning we call overfitting. [18:18] Presentation: Slide 29 [18:18] Torika Sarthia: So our next topic is Extensibility. This will be one of our shorter sections, so I'll just try to push through it and we can all get done early. [18:19] Torika Sarthia: Tonight we're introducing three topics: Arabesque, light bus ornaments, and customizing the HUD. [18:20] Torika Sarthia: Not everyone wants or needs to write a whole big honkin' LSL program to add some feature to the system. Sometimes you just want a button that says "Banana mode activated!" so you can RP out Banana mode, or... that analogy seemed better in my mind. [18:20] Torika Sarthia: Sometimes you want something that can be done with just a little bit of clever use of the standard system command language. [18:20] Presentation: Slide 30 [18:21] Torika Sarthia: The easy solution there is an Arabesque script. [18:22] Torika Sarthia: The 'perform' button on the main menu lists out all the scripts you have with an "a_" filename. [18:22] Torika Sarthia: Filenames starting with "px_" will be read along with personas when they start up, at the same time the system announces the persona is activated. [18:23] Torika Sarthia: Finally, the system _init script also uses Arabesque. [18:23] Presentation: Slide 31 [18:23] Torika Sarthia: Most statements in Arabesque are just @ commands without the @ sign. They're notecards full of commands. [18:23] Torika Sarthia: Commands like 'color' or 'power'; stuff you use all the time. [18:23] Torika Sarthia: But there are some extra ones, written out here and on the next slide, that let you do various things that are useful for presentations. [18:24] Presentation: Slide 32 [18:24] Torika Sarthia: There are also a number of keywords that give a bit of structure to the language, making it possible to manipulate variables or pass them between scripts during repeated runs or multiple scripts. [18:25] Presentation: Slide 33 [18:25] Torika Sarthia: If that seemed confusing, we'll be looking at an example in a few slides. [18:25] Presentation: Slide 34 [18:26] Torika Sarthia: There are three different types of variables we support; ints, floats, and strings. At present the ints are the most usable, although now that the parser module has been trimmed down we may expand to add better facilities in the future. [18:28] Torika Sarthia: ...Okay, an example will probably help. [18:28] Presentation: Slide 35 [18:28] Torika Sarthia: Here's a very simple, painless program. Actually it's not as simple as it gets; the simplest program would probably be something like: say Hello world! [18:28] : Eri: Ints are integers... 1, 2, 3...et cetera. Floats are numbers with a decimal component. Strings are sets of characters. For example, "Hello" is a string. [18:29] Torika Sarthia: Yes, as Eri said. So basically, right now you can only manipulate whole numbers if you want to test them. [18:29] Torika Sarthia: For the most part, the variables are only useful for inserting preset values that have been provided by other modules. [18:30] Torika Sarthia: ...Which I'll get to work on putting together. [18:30] Torika Sarthia: In a program like this, the statements are executed one at a time by the system, going from top to bottom. [18:31] Torika Sarthia: So let's look at the lines one by one. [18:31] Torika Sarthia: First line: # This is a comment. [18:31] Torika Sarthia: We ignore it completely. That's documentation for the programmer to read, not the machine itself. [18:31] Torika Sarthia: Second line: randset a 3 [18:31] Torika Sarthia: Going back a couple of slides... [18:31] Presentation: Slide 32 [18:32] Torika Sarthia: We see that the 'randset' command sets an integer variable to a value less than some number. [18:32] Torika Sarthia: So, in this case, we've created a number called "a" and we're saying we want it to be equal to a number from 0 to 2. [18:32] Presentation: Slide 35 [18:33] Torika Sarthia: The next line of code is the same thing. It makes a variable called "b" and sets that to some random number from 0 to 2, just like if you'd rolled a three-sided die. [18:33] Torika Sarthia: Below that, we have a 'say' statement. This makes the unit say whatever follows it, even if the unit's mind is powered off. [18:34] Torika Sarthia: You could use the built-in 'relay' command for this, too; they're equivalent, although 'relay' might be more familiar if you use the remote console. [18:34] Torika Sarthia: However, if we execute this code, we'll find that it doesn't actually make you say "You rolled %a and %b ^H!" [18:34] Torika Sarthia: There's some processing going on. [18:35] Torika Sarthia: The processing works in two stages: first, it puts in variables. [18:35] Torika Sarthia: % indicates that the next word is the name of an integer, so %a and %b become the values we stored in 'a' and 'b' in the previous lines of code. [18:37] Torika Sarthia: Second, any time you see ^H after a space, that means the space before it needs to be removed. We had to put that space there because we wanted to put a nice clean exclamation point right after the value of 'b' and not have an extra gap. Also, we didn't want to get the value of a variable named 'b!', just 'b'. The variable name parser is very stupid and doesn't know about punctuation, just spaces. [18:37] Torika Sarthia: The detail of that last part doesn't matter much, though. Just remember that ^H is magic. [18:38] Torika Sarthia: The next line is blank, so we skip it completely. [18:39] Torika Sarthia: The next four lines all start with 'ifeq'. That means they're question statements. [18:40] Torika Sarthia: In a normal programming language, we have conditional statements that look something like: if a = b then [18:40] : Eri: Guessing that's short for "if-equals" [18:40] Torika Sarthia: Arabesque is a bit more limited, though, so yes, ifeq just takes two parameters, the first of which must be a variable name. [18:41] Torika Sarthia: So the first ifeq line could be read as: if a is zero, say: "You lose! Try again!" [18:41] Torika Sarthia: And the rest should be easy to understand. [18:41] Torika Sarthia: We check every possible value of a, which should only be a number from 0-2 because of the way we set it up at the start of the program. [18:42] Torika Sarthia: If we rolled 0 for a, then the player loses. [18:42] Torika Sarthia: If we rolled 1 for a, then the player wins b coins, which could be anywhere from 0 to 2. [18:43] Torika Sarthia: If we rolled 2 for a, then make a bad reference to an even worse cartoon and turn on the playful personality using the same normal as "@persona". [18:43] Torika Sarthia: Finally, if a happens to be equal to b, that's worth remarking on, so we do so and tell the player they got an extra bonus. [18:44] Torika Sarthia: None of this actually amounts to anything, but it does work as it says. [18:44] NS Pen310p3: so random set B only applies if it equals set A [18:44] NS Pen310p3: this is much easier to follow than most scripting. [18:46] Torika Sarthia: The randset line for b should be read as equivalent to this C++: int b = rand() % 3; [18:46] Torika Sarthia: The b variable always exists, and we always report its value. [18:47] Torika Sarthia: Additionally, variables hang around after the script ends, so you can reuse them in another program if you want, or run the same program multiple times. [18:47] Torika Sarthia: ...However, there's no math at all, so the usefuless is relatively limited. [18:47] Presentation: Slide 36 [18:48] Torika Sarthia: Okay. That's all I'm going to say about scripting for now. I fully plan on running more detailed lectures in the near future about coding, possibly including some basic LSL scripting. [18:48] Torika Sarthia: For now, we'll talk about LSL a teensy tiny bit, although without giving much insight. The subject of the day is how to add fancy lighting effects to your other mesh possessions and creations. [18:49] Torika Sarthia: Downstairs in the shop area there's a box called the Companion 8 SDK. It's free and contains everything you need to get started with developing for the system, from examples of apps to basic templates for various devices. [18:49] Presentation: Slide 37 [18:50] Torika Sarthia: In this case, you'll need a specific script from that box, called Passive Device Code: Flicker. [18:50] Torika Sarthia: This was revised just earlier today, so if you have an older copy of the SDK, you should update for best results. [18:51] Torika Sarthia: The procedure is fairly simple, but you need to know about link numbers and face numbers. [18:52] Torika Sarthia: When you create a simple cube, it has six faces, each of which can be textured independently. In other 3D programs these are not just called faces (which is a term that really means 'polygons') but 'materials' or 'surfaces' [18:54] Torika Sarthia: Face index numbers start from 0 and can go as high as 8. [18:55] Torika Sarthia: This cube has 9 faces: six on the outside, one for the interior hollowed surface, and two for either side of the path cut. [18:57] t3z: Ah cool, does that number change of course for other multisided objects? [18:57] Torika Sarthia: Annoyingly, the face numbers for prims change depending on how their parameters work. [18:57] Torika Sarthia: So... yes, lots of changing. [18:57] Torika Sarthia: Meshes have a minimum of 1 face and a maximum of 9, again numbered from 0 to 8. [18:58] Torika Sarthia: To get more complex structures, we have to link multiple prims/meshes/sculpts together. This makes them move and act as one object, with a single object being the numerical parent of all others. [18:58] Torika Sarthia: This object gets the link number of 1, and all the others get higher numbers above that. [18:58] Torika Sarthia: However, when an object is unlinked, it has a link number of zero. [18:58] Torika Sarthia: To figure out the link numbers of the things you want to modify, select the move tool with the 'edit linked' box turned on. [18:59] Torika Sarthia: To figure out the face number, use the 'select face' tool. [18:59] Torika Sarthia: The number will show just under the 'link' and 'unlink' buttons. [18:59] Torika Sarthia: So, with that information in mind, rewriting the template script is just a matter of making sure you have the right numbers. [18:59] Presentation: Slide 38 [19:00] Torika Sarthia: Here's the part of the script you need to change. I removed some comments from it; they start with // and don't change the program in any meaningful way. [19:01] Torika Sarthia: The keyword "ALL_SIDES" means all faces on the prim, and the keyword "LINK_SET" means all prims/meshes/sculpts that are linked to this one. [19:01] Torika Sarthia: If you only need to modify one face on all objects, and it's always the same face, just change 'ALL_SIDES'. If you only need to change all sides on one link member, just change 'LINK_SET'. [19:01] Torika Sarthia: If, however, you need to alter more faces/parts... [19:01] Presentation: Slide 39 [19:02] Torika Sarthia: Duplicate the sections of code indicated in orange on this slide. Just copy them right underneath each other, and you can modify the two (or more) copies independently. [19:02] Presentation: Slide 40 [19:02] Torika Sarthia: You'll need to add these commas to separate the copies, though, otherwise you'll get a syntax error. [19:03] Torika Sarthia: The only other thing to remember is to modify your scripts before putting them in the object. Otherwise you may accidentally turn the whole thing into a lit-up attachment, which is rarely desirable for computer components. [19:03] Torika Sarthia: Adding this script will make the lights turn on and off with your controller, change color with your controller, and even flicker when you're !broken. [19:03] Presentation: Slide 41 [19:04] Torika Sarthia: And that's all it takes! [19:04] Torika Sarthia: Finally, a couple of quick slides about customizing the HUD. [19:04] Torika Sarthia: The local console that comes with the controller is a pretty clever beast. The default symbols may seem inscrutable, but they're not compulsory. You can replace them just by dragging in new textures and rebooting. [19:05] Torika Sarthia: Similarly, there's a config file stored in the controller that gets copied over as needed (to protect against updates). It can be used to... [19:05] Presentation: Slide 42 [19:05] Torika Sarthia: ...Adjust all of these things. [19:06] Torika Sarthia: With these, you can change the spacing of your icons, the colour used for text when charging, low on power, or on reserve power, and the appearance of the background behind the icons. [19:06] Torika Sarthia: And, most importantly, you can move the HUD up and down (with 'display-offset') if you don't use a standard 16:9 aspect ratio. [19:06] Presentation: Slide 43 [19:07] Torika Sarthia: And that's it for tonight. Here's the usual boilerplate about getting more documentation. [19:07] Presentation: Slide 44 [19:07] Torika Sarthia: Remember to put your faith in the documentation—where it exists. [19:07] Presentation: Slide 45